'use strict';
module.exports = options => {
  return async function filter(ctx, next) {

    // console.log(ctx);
    if (!ctx.query.portal_ticket || Object.getOwnPropertyNames(ctx.query.portal_ticket).length <= -1) {
      // console.log('-------11-------');
      if (!ctx.session.portal_key || Object.getOwnPropertyNames(ctx.session.portal_key).length <= -1) {
        // ticket和key都为空 跳转页面
        const url = encodeURIComponent('http://84.16.9.28:8080' + ctx.path);
        ctx.redirect(`http://84.16.9.28:8080/portal/sso/login.do?service=${url}`);
        // console.log('111111111111111111111');
        // console.log(ctx.query);
        // console.log(ctx.query.portal_ticket);
        // console.log(ctx.session.portal_key);
        // console.log('222222222222222222222');
        // 跳转
        // console.log('------444-------');
      } else {
        // ticket为空但是seesion有key不进行操作
        // return;
        // console.log('-------333-------');
      }
    } else {
      // ticket不为空 进行请求获取key缓存到session
      const url = `http://84.16.9.28:8080/portal/sso/validate.c?service=${encodeURIComponent('http://84.16.9.28:8080' + ctx.path)}&portal_ticket=${encodeURIComponent(ctx.query.portal_ticket)}`;
      // console.log('pppppppppppppppppppppppppppp');
      // console.log(url);
      const result = await ctx.service.login.login(url);
      // console.log('1111111111111111111111111111111111111111');
      // console.log(result);
      // console.log('2222222222222222222222222222222222222222');
      if (result.data.status === 'success') {
        ctx.session.portal_key = result.data.portal_key;
        ctx.session.userInfo = await ctx.service.login.getUserInfo();
      }
      // console.log(ctx.session);
    }
    await next();
  };
};
